package com.example.lt.service;

import com.example.lt.entity.user.User;
import com.example.lt.entity.user.UserModel;
import com.example.lt.entity.video.Video;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * @Author 小涛Tao
 * @Date: 2024/08/04/21:04
 * version 1.0 注释：
 **/
public interface InterestPushService {

    /**
     * 推入标签库，把视频 id 添加到所在的标签库中
     * @param video
     */
    void pushSystemStockIn(Video video);

    /**
     * 添加分类库，把视频 id 添加到所在的分类库中，用于后续随机推送分类视频
     * @param video
     */
    void pushSystemTypeStockIn(Video video);

    /**
     * 根据分类获取视频id，乱序随机
     * @param typeId
     * @return
     */
    Collection<Long> listVideoIdByTypeId(Long typeId);

    /**
     * 删除标签内视频
     * @param video
     */
    void deleteSystemStockIn(Video video);

    /**
     * 删除分类库中的视频
     * @param video
     */
    void deleteSystemTypeStockIn(Video video);

    /**
     * 用户初始化模型 -> 订阅分类
     * @param userId 用户id
     * @param labels 标签名
     * @param oldLabels 旧标签
     */
    void initUserModel(Long userId, List<String> labels,  List<String> oldLabels);


    /**
     * 修改用户模型
     * @param userModel 用户模型相关信息
     */
    void updateUserModel(UserModel userModel);

    /**
     * 根据标签获取视频id【随机】
     * @param labelNames 标签集合
     * @return
     */
    Object listVideoIdByLabels(ArrayList<String> labelNames);

    /**
     * 用户获取推送视频【兴趣推送】，其中有一条视频是和性别有关
     * @param user 用户信息
     * @return 视频id集合
     */
    Collection<Long> listVideoIdByUserModel(User user);
}
